﻿using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;

using ProjectBase.Core;
using ProjectBase.Tools.Publishing;

namespace ProjectBase.Tools.Publishing.Diagnostics
{
    [ContractClassFor(typeof(IPublishingHandler))]
    internal abstract class PublishingHandler : IPublishingHandler
    {
        #region IPublishingHandler Members

        public void Init(System.Xml.Linq.XElement settings)
        {
            Contract.Requires(settings.Is(), "Parameter 'settings', passed into an IPublishingHandler Init() method cannot be null");
            throw new NotImplementedException();
        }

        public void Exit()
        {
            throw new NotImplementedException();
        }

        public PublishingResult Handle(object reporter, string message, Exception exception)
        {
            throw new NotImplementedException();
        }

        public PublishingResult Handle(object reporter, Core.Severity severity, object message, params object[] args)
        {
            throw new NotImplementedException();
        }

        public PublishingResult Handle(object reporter, Func<string> message, Core.Severity severity)
        {
            throw new NotImplementedException();
        }

        public void SetSuccessor(IPublishingHandler successor)
        {
            throw new NotImplementedException();
        }

        public int Priority
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public IPublishingHandler Successor
        {
            get { throw new NotImplementedException(); }
        }

        #endregion
    }
}
